// 代码显示区域接口
export interface CodeRegion {
  startLine: number;
  endLine: number;
  id?: string;
  backgroundColor?: string; // 可选的背景色
}

// 代码文件内容接口
export interface CodeFileContent {
  content: string;
  language: string;
  filename: string;
  totalLines: number;
}

// API 响应接口
export interface CodeViewerData {
  fileContent: CodeFileContent;
  visibleRegions: CodeRegion[];
}

// 行状态枚举
export enum LineVisibility {
  VISIBLE = 'visible',
  HIDDEN = 'hidden',
  EXPANDABLE = 'expandable'
}

// 行类型枚举
export enum LineType {
  ORIGINAL_VISIBLE = 'original_visible',    // 原始可见区域
  MANUALLY_EXPANDED = 'manually_expanded'   // 手动展开区域
}

// 处理后的行信息
export interface ProcessedLine {
  lineNumber: number;
  content: string;
  visibility: LineVisibility;
  lineType?: LineType;
  regionId?: string;
  backgroundColor?: string;
}

// 显示行信息（用于渲染）
export interface DisplayLine {
  lineNumber: number;
  content: string;
  highlightedContent?: string;   // 高亮后的HTML内容
  isCollapsedPlaceholder?: boolean;
  hiddenLineStart?: number;
  hiddenLineEnd?: number;
  regionBefore?: string;
  regionAfter?: string;
  lineType?: LineType;
  backgroundColor?: string;
}

// 虚拟滚动专用的显示行接口
export interface VirtualDisplayLine extends DisplayLine {
  virtualIndex: number;         // 虚拟索引
  measuredHeight?: number;      // 实际测量高度
  renderOffset?: number;        // 渲染偏移量
  isVisible?: boolean;          // 是否在当前视口中可见
} 